home *** CD-ROM | disk | FTP | other *** search
/ Night Owl 6 / Night Owl's Shareware - PDSI-006 - Night Owl Corp (1990).iso / 049a / kqdup101.zip / KILLQ.TXT < prev    next >
Text File  |  1991-11-06  |  48KB  |  1,070 lines

  1.  
  2.  
  3.  
  4.  
  5.  
  6.  
  7.  
  8.  
  9.  
  10.  
  11.  
  12.  
  13.  
  14.  
  15.  
  16.  
  17.  
  18.  
  19.  
  20.  
  21.  
  22.  
  23.  
  24.  
  25.  
  26.  
  27.  
  28.  
  29.  
  30.  
  31.  
  32.                             Kill QWK Dupes Version 1.01                            Kill QWK Dupes Version 1.01
  33.              (C) Copyright 1991 by Dataware, Inc.  All rights reserved.             (C) Copyright 1991 by Dataware, Inc.  All rights reserved.
  34.  
  35.  
  36.  
  37.  
  38.                                  Table of Contents                                 Table of Contents
  39.  
  40.        System Description                                                  1
  41.        System Requirements                                                 1
  42.        Technical Support                                                   1
  43.        Registration                                                        2
  44.        Software License                                                    2
  45.        How to use Kill QWK Dupes - Overview                                3
  46.        How to use Kill QWK Dupes - The command line                        3
  47.        Command Line Options                                                5
  48.            -Log:                                                           5
  49.            -CF:                                                            6
  50.            -DN:                                                            6
  51.            -MC:                                                            7
  52.            -MD:                                                            7
  53.            -NC:                                                            7
  54.            -Com:                                                           7
  55.            -FSL                                                            7
  56.            -NoFSL                                                          8
  57.            -NDX                                                            8
  58.            -NoNDX                                                          8
  59.            -NoKill                                                         8
  60.            -Kill                                                           8
  61.        Use of the KILLQDUP environment variable                            9
  62.        Appendix A: How Kill QWK Dupes operates                            10
  63.        Appendix B: How to install Kill QWK Dupes into the MarkMail door   11
  64.        Appendix C: How to install Kill QWK Dupes into the Qmail door      13
  65.        Appendix D: Multi-node considerations                              15
  66.        Appendix E: Errorlevels returned by Kill QWK Dupes                 15
  67.        History                                                            16
  68.  
  69.  
  70.  
  71.  
  72.  
  73.  
  74.  
  75.  
  76.  
  77.  
  78.  
  79.  
  80.  
  81.  
  82.  
  83.  
  84.  
  85.  
  86.  
  87.  
  88.  
  89.  
  90.  
  91.  
  92.  
  93.  
  94.                                           i
  95.  
  96.  
  97.  
  98.  
  99.        System Description       System Description
  100.        ──────────────────────────────────────────────────────────────────────
  101.        Ever download a QWK mail packet from your favorite BBS, only to find
  102.        an overwhelming number of duplicate messages?  Or import a netmail
  103.        packet into your BBS and discover 1/10-1/2 of the messages are
  104.        duplicates re-exported by some other node in the network (maybe you've
  105.        accidentally done this yourself)?  Are you getting tired of users
  106.        uploading old REP packets more than once causing duplicate messages to
  107.        be stored in your message base?  Then Kill QWK Dupes is for YOU!
  108.  
  109.        Kill QWK Dupes will remove duplicate messages from your QWK and/or REP
  110.        packets.  It accomplishes this by maintaining its own independent CRC
  111.        table of past messages (including those from previous packets), and
  112.        removes messages from the current packet that match the CRC of a
  113.        message stored in the table.  It will even rebuild the *.NDX files
  114.        such that a QWK packet continues to be usable by the QWK compatible
  115.        offline readers (this feature can even be used to generate *.NDX files
  116.        for a QWK packet that doesn't have them, or has had them corrupted
  117.        somehow).
  118.  
  119.  
  120.        System Requirements       System Requirements
  121.        ──────────────────────────────────────────────────────────────────────
  122.        Kill QWK Dupes will run on any IBM PC or compatible with DOS 2.0 or
  123.        higher and at least 96k of free memory.  Kill QWK Dupes is very light
  124.        on code, but heavy on data space (depending on the size of the CRC
  125.        table you specify).
  126.  
  127.  
  128.        Technical Support       Technical Support
  129.        ──────────────────────────────────────────────────────────────────────
  130.        If you have any questions or problems regarding Kill QWK Dupes or any
  131.        other Dataware product, please call our office for assistance.  Our
  132.        office hours are Monday through Friday, 9:30am-5:30pm Pacific time.
  133.        You can also leave a message or pick up the latest versions on our 24-
  134.        hour BBS named "The Real Batchin' Board".  You may also mail your
  135.        comments and questions to the Dataware office.  The Dataware address
  136.        and phone numbers are as follows:
  137.  
  138.             Dataware, Inc.
  139.             Suite 2571
  140.             1420 NW Gilman Boulevard
  141.             Issaquah, Wa.  98027-5399
  142.  
  143.             Voice (9:30am to 5:30pm PT): (206) 391-9333
  144.  
  145.             The Real Batchin' Board BBS (available 24 hours): (206) 391-2330
  146.  
  147.  
  148.  
  149.  
  150.  
  151.  
  152.  
  153.  
  154.  
  155.                                           1
  156.  
  157.  
  158.  
  159.  
  160.        Registration       Registration
  161.        ──────────────────────────────────────────────────────────────────────
  162.        If you find that Kill QWK Dupes is useful to you, you can become a
  163.        registered user.  As a registered user, you will receive a diskette
  164.        with the latest registered version on it.  The 45 day expiration code
  165.        present in the unregistered version is disabled in the registered
  166.        version.  You will also automatically receive, when available, a free
  167.        upgrade to the next version of Kill QWK dupes.  You will also receive
  168.        the password necessary to download all future registered version from
  169.        the support BBS.  The current registration fees are as follows:
  170.  
  171.             Kill Qwk Dupes Version 1.00 on 5 1/4" Diskette      $29
  172.             Kill Qwk Dupes Version 1.00 on 3 1/2" Diskette      $31
  173.             Laser Printed Manual                                $ 5
  174.             Ups Ground                                          $ 3
  175.             Ups Second Day Air                                  $ 6
  176.             Ups Next Day Air                                    $12
  177.             All Over-seas Shipping                              $ 6
  178.             Washington residents add 8.2% sales tax to the total
  179.  
  180.  
  181.        Software License       Software License
  182.        ──────────────────────────────────────────────────────────────────────
  183.        You are free to use (for a 30 day evaluation period), copy and
  184.        distribute Kill QWK Dupes IF:                                 IF
  185.  
  186.             - No fee is charged for its use, copying or distribution.
  187.             - It is not modified in ANY way.
  188.  
  189.        Dataware hereby disclaims all warranties relating to this software,
  190.        whether express or implied, including without limitation any implied
  191.        warranties of merchantability or fitness for a particular purpose.
  192.        Dataware will not be liable for any special, incidental,
  193.        consequential, indirect or similar damages due to loss of data or any
  194.        other reason, even if Dataware or an agent of Dataware has been
  195.        advised of the possibility of such damages.  In no event shall
  196.        Dataware's liability for any damages ever exceed the price paid for
  197.        the license to use software, regardless of the form of the claim.  The
  198.        person using the software bears all risk as to the quality and
  199.        performance of the software.
  200.  
  201.        Sysops who run more then one BBS (as determined by the name they go
  202.        by) are required to register one copy for each separate and distinct
  203.        BBS name in which Kill QWK Dupes is being run on as part of a QWK
  204.        compatible mail door.  Multi-node sysops of the same distinct BBS name
  205.        need register only one copy for all nodes regardless of how many
  206.        different machines and how many different QWK compatible mail doors
  207.        Kill QWK Dupes may be running on.  Users need register only copy for
  208.        use with all BBS's they may call.  Network connected sysops need
  209.        register only one copy for use with all networks they are connected
  210.        to.
  211.  
  212.  
  213.  
  214.  
  215.  
  216.                                           2
  217.  
  218.  
  219.  
  220.  
  221.        How to use Kill QWK Dupes - Overview       How to use Kill QWK Dupes - Overview
  222.        ──────────────────────────────────────────────────────────────────────
  223.        Kill QWK Dupes can be used in a number of environments.  As a node in
  224.        a network, you can use it to scan your incoming QWK packets and/or
  225.        your outgoing REP packets.  As a sysop of a BBS that has a QWK
  226.        compatible mail door, you can use it to scan the REP packets uploaded
  227.        by your users.  NOTE: DO NOT use it to scan the QWK packets downloaded
  228.        by the users unless the -NoKill parameter is used (described below),
  229.        because all subsequent packets after the first one would appear as
  230.        duplicates to the program and automatically removed from the users
  231.        packet.  As a user of an offline reader, you can use it to scan the
  232.        QWK packets you receive from your favorite BBS and/or the REP packets
  233.        you're uploading to the BBS.
  234.  
  235.        Kill QWK Dupes does not automatically extract the files out of the QWK
  236.        and REP packets it works on.  Nor does it automatically merge them
  237.        back in after processing.  That was deliberately left out of the
  238.        program due to the myriad of compression programs being used today
  239.        with QWK/REP packets.  In addition, this makes it a perfect fit in for
  240.        scanning a freshly extracted .REP packet.  We also wanted to stay away
  241.        from a configuration file for this program, so you'll find everything
  242.        is command line and environment variable driven.  In addition, it is
  243.        intended to be run in a batch file, therefore it does no prompting for
  244.        information.  If it doesn't have enough information, or runs into an
  245.        error while running, it simply reports the error and exits.
  246.  
  247.        Kill QWK Dupes works on the MESSAGES.DAT file after having been
  248.        extracted from the QWK file.  It also works on the BBS_ID.MSG file
  249.        after having been extracted from the BBS_ID.REP file.  If you ask it
  250.        to rebuild the *.NDX files contained in QWK packets (so that your
  251.        offline reader can continue to read the packet), it also requires the
  252.        CONTROL.DAT file be extracted from the QWK file.  It uses information
  253.        contained in this file to properly rebuild the *.NDX files.
  254.  
  255.  
  256.        How to use Kill QWK Dupes - The command line       How to use Kill QWK Dupes - The command line
  257.        ──────────────────────────────────────────────────────────────────────
  258.        Kill QWK Dupes is easy to use and fast.  You tell Kill QWK Dupes what
  259.        to do by what you enter on the command line at the DOS prompt or via
  260.        an environment variable (explained below).  All command line options
  261.        that Kill QWK Dupes recognizes, along with examples, are explained in
  262.        the following sections.
  263.  
  264.        The Kill QWK Dupes command line structure is as follows:
  265.  
  266.        KILLQDUP [d:][path]qwkfile [options]
  267.  
  268.        [d:][path]qwkfile = The name and path location of the QWK file to be
  269.        scanned.  If you're scanning a QWK packet, the filename should be
  270.        MESSAGES.DAT.  If you're scanning a REP packet, the filename should be
  271.        BBS_ID.MSG (where BBS_ID is the 1-8 character ID used by your BBS).
  272.        NOTE: Parameters listed in [] are optional.
  273.  
  274.        options = All the various Kill QWK Dupes options that you can use.
  275.  
  276.  
  277.                                           3
  278.  
  279.  
  280.  
  281.  
  282.  
  283.        A simple example is as follows:
  284.  
  285.    C:\QPACKETS> KILLQDUP messages.dat
  286.  
  287.    Kill QWK Dupes v1.00. (C) Copyright 1991 by Dataware, Inc.
  288.    UNREGISTERED version.  This version will cease to function 45 days after
  289.    activation.  After the normal 30 day evaluation period, you will have 15 days
  290.    in which to obtain your registered version before the software automatically
  291.    ceases to function.  After 45 days, you will have to delete your CRC file
  292.    (default filename MSGSDUPE.CRC) to re-enable the software.
  293.  
  294.    QWK file to be processed  : MESSAGES.DAT
  295.    CRC tracking file         : MSGSDUPE.CRC
  296.    Door Name                 :
  297.    Number of CRC's to track  : 32768
  298.    Number of days to track   : 24855
  299.    Logfile                   :
  300.    Comm. Port                : 0
  301.    Use FOSSIL driver         : No
  302.    Rebuild .NDX files        : No
  303.    Remove duplicate messages : Yes
  304.  
  305.    This software will cease to function on Friday September 06,1991 @10:56PM
  306.    Total messages checked    : 97
  307.    Total duplicates purged   : 1
  308.    Total processing time     : 2 seconds
  309.  
  310.        When Kill QWK Dupes starts up, it begins by displaying the copyright
  311.        message and some status information about what it's going to do.  It
  312.        reports the file name it will process, the logfile (if any) it will
  313.        write its output status to, the Comm. port it will talk to, whether or
  314.        not it will use a FOSSIL driver for accessing the Comm. port, the name
  315.        of the CRC file it will use for checking the CRC's, whether or not the
  316.        *.NDX files will be built, the number of CRC's it will maintain before
  317.        throwing away the oldest ones, and finally the number of days CRC's
  318.        will be kept in the table before being thrown away.  Additionally, if
  319.        you have the unregistered version, it will also report exactly when
  320.        your 45 day evaluation period will end.
  321.  
  322.        Kill QWK Dupes then starts its processing by making a .BAK copy of the
  323.        original QWK file.  You will find a MESSAGES.BAK file, or a BBS_ID.BAK
  324.        file after it's done, which is an exact copy of the original input
  325.        file.  This is just a precaution in case something goes seriously
  326.        wrong while processing.
  327.  
  328.        Next, Kill QWK Dupes looks at the file to see if it has been
  329.        previously scanned before (every file is marked with the date it was
  330.        last scanned, and the location it stopped scanning).  If it has been
  331.        previously scanned, Kill QWK Dupes will automatically advance to the
  332.        point in the file where it last stopped and resume scanning.  This
  333.        feature is most useful to netmail sysops scanning their .REP packets
  334.        prior to uploading to their HUB.  If a .REP packet is created by an
  335.        EXPORT function and scanned, and then sometime later more messages
  336.  
  337.  
  338.                                           4
  339.  
  340.  
  341.  
  342.  
  343.        appended to it (such as a transfer with your HUB failed), scanning the
  344.        packet again will not result in removing all the older messages as
  345.        duplicates.
  346.  
  347.        During its processing, Kill QWK Dupes will display a percent
  348.        completion status every second.  This indicator tells you what percent
  349.        of the input file has been scanned.  When it reaches 100%, processing
  350.        is complete and a status summary is displayed.  The status summary
  351.        tells you how many messages in the input file were scanned, how many
  352.        duplicates were removed from the input file and how many seconds it
  353.        took to run.
  354.  
  355.  
  356.        Command Line Options       Command Line Options
  357.        ──────────────────────────────────────────────────────────────────────
  358.        There are 12 command line options you may give to Kill QWK Dupes.
  359.        They options are used to select a Logfile, the CRC file, the size of
  360.        the CRC file, the Comm. port to use, whether or not to use a FOSSIL
  361.        driver, whether or not to rebuild the *.NDX files, whether or not to
  362.        actually remove duplicate messages.  Each of them will be explained in
  363.        detail in the following sections
  364.  
  365.  
  366.        -Log:[d:][path]filename       -Log:[d:][path]filename
  367.        ──────────────────────────────────────────────────────────────────────
  368.        This option causes the status summary that's displayed on the screen
  369.        to also be written to a text file.  This is very useful for unattended
  370.        operation, such as automated netmail runs, or REP packet uploads into
  371.        a mail door.  Five pieces of information are written to the log file
  372.        every time Kill QWK Dupes is run.  First the date & time Kill QWK
  373.        Dupes was run is recorded.  Next the name of the mail packet file
  374.        processed is recorded.  Next, the count of the number of messages
  375.        scanned is recorded.  Following that the number of duplicate messages
  376.        removed is recorded.  And lastly, the total number of seconds used in
  377.        processing is recorded.  A logfile will look like the following:
  378.  
  379.        *****************************************
  380.        Kill QWK Dupes run on 08/07/91 at 21:25
  381.          QWK file MESSAGES.DAT processed
  382.            Total messages checked   : 804
  383.            Total duplicates purged  : 5
  384.            Total processing time    : 42 seconds
  385.        *****************************************
  386.        Kill QWK Dupes run on 08/07/91 at 21:27
  387.          QWK file MESSAGES.DAT processed
  388.            Total messages checked   : 882
  389.            Total duplicates purged  : 1
  390.            Total processing time    : 52 seconds
  391.        *****************************************
  392.        Kill QWK Dupes run on 08/07/91 at 21:28
  393.          QWK file MESSAGES.DAT processed
  394.            Total messages checked   : 1014
  395.            Total duplicates purged  : 1
  396.            Total processing time    : 50 seconds
  397.  
  398.  
  399.                                           5
  400.  
  401.  
  402.  
  403.  
  404.        *****************************************
  405.        Kill QWK Dupes run on 08/07/91 at 21:31
  406.          QWK file MESSAGES.DAT processed
  407.            Total messages checked   : 97
  408.            Total duplicates purged  : 0
  409.            Total processing time    : 3 seconds
  410.  
  411.  
  412.        -CF:[d:][path]filename       -CF:[d:][path]filename
  413.        ──────────────────────────────────────────────────────────────────────
  414.        This option is useful in many circumstances.  As a user of multiple
  415.        BBS's, you should keep separate CRC files, one for each BBS you use.
  416.        If you try and use the same CRC file for two or more BBS's, you run
  417.        the risk of similar messages between the two BBS's being invalidly
  418.        removed from the QWK packets.  In addition, if you send the same
  419.        message to two or more BBS's, that message will probably be removed
  420.        from the REP packet as it is scanned.
  421.  
  422.        As a node calling two or more HUB's for netmail, you should keep
  423.        separate CRC files for the same reason as a user of two or more BBS's.
  424.  
  425.        As a sysop of a BBS that has a QWK compatible mail door and is also a
  426.        node in a network, you should use different CRC files for the REP
  427.        packet uploads and the netmail scans.  If you try and use the same
  428.        packet, the messages uploaded by your users will be seen as duplicates
  429.        by Kill QWK Dupes and removed when it scans your netmail REP packet.
  430.  
  431.        As a sysop of a multi-node BBS having a QWK compatible mail door, you
  432.        should use this option to make each node point to the same CRC file.
  433.        Kill QWK Dupes is fully SHARE compatible allowing multiple nodes to
  434.        access the same file without problems.  And by using this option, you
  435.        can prevent users from uploading the same message more than once by
  436.        using more then one node.
  437.  
  438.        It is recommended however for BBS sysops to use the same CRC file for
  439.        multiple mail doors.  This way, no matter which mail door is used,
  440.        Kill QWK Dupes will remove the duplicate messages without error.
  441.  
  442.  
  443.        -DN:name       -DN:name
  444.        ──────────────────────────────────────────────────────────────────────
  445.        Kill QWK Dupes recognizes the "Add/Drop/Reset" mail door commands that
  446.        may be present in .REP packets.  It does this solely based upon the
  447.        name in the "TO" field of the message.  If this field contains either
  448.        QMAIL, MARKMAIL, ROSEMAIL, TOMCAT or QWIKER, it decides that the
  449.        message is a special message to the mail door software and will not
  450.        count it as a duplicate.
  451.  
  452.        However, if your mail door is not one of the 5 listed above, Kill QWK
  453.        Dupes may be fooled into believing the "Add/Drop/Reset" commands
  454.        addressed to your mail door are duplicates and remove them from the
  455.        packet by mistake.  To prevent this from occurring, you can use this
  456.        option to specify what name your mail door goes by when receiving this
  457.        type of message.  Please refer to the documentation and/or author of
  458.  
  459.  
  460.                                           6
  461.  
  462.  
  463.  
  464.  
  465.        your mail door package for the specific name that needs to be
  466.        configured in this parameter.
  467.  
  468.  
  469.        -MC:32-32756, default is 32756       -MC:32-32756, default is 32756
  470.        ──────────────────────────────────────────────────────────────────────
  471.        This option is used to control the size of the CRC table.  Each entry
  472.        in the CRC table uses 6 bytes of disk space and memory to store it.
  473.        32756 entries requires a total of 196,536 bytes of disk space, and
  474.        memory to store.  You may want to limit the number of CRC entries to
  475.        conserve disk space and/or control the amount of time Kill QWK Dupes
  476.        requires to scan the entire table looking for a duplicate.  Also, if
  477.        you're running short on memory, this parameter can be used to reduce
  478.        the amount of memory Kill QWK Dupes requires to operate.
  479.  
  480.  
  481.        -MD:1-24855, default is 24855       -MD:1-24855, default is 24855
  482.        ──────────────────────────────────────────────────────────────────────
  483.        This is another method of controlling the size of the CRC table.  The
  484.        difference is that this method controls the age of each CRC entry.
  485.        CRC entries older then the specified number of days will automatically
  486.        be purged from the table.  This allows things like the same "For Sale
  487.        add" to be re-posted every few days.
  488.  
  489.  
  490.        -NC:1-32767, default is 3       -NC:1-32767, default is 3
  491.        ──────────────────────────────────────────────────────────────────────
  492.        This option controls the maximum number of different conferences the
  493.        same message may appear.  Useful to control the "letter bomb" where a
  494.        user enters the same message in all conferences he has access to.  You
  495.        may wish to change the default to permit messages such as "For Sale"
  496.        to be posted in more, or less, then a maximum of 3 different
  497.        conferences.
  498.  
  499.  
  500.        -Com:1 or 2 or NNNN where NNNN is the ports hexadecimal address       -Com:1 or 2 or NNNN where NNNN is the ports hexadecimal address
  501.        ──────────────────────────────────────────────────────────────────────
  502.        This option causes all text displayed on the screen to also be sent
  503.        out to the specified comm. port number.  It's only useful to BBS
  504.        sysops using Kill QWK Dupes to eliminate duplicates as part of their
  505.        REP packet upload process.
  506.  
  507.        If -FSL is also specified, this number can be 0-7.  Kill QWK Dupes
  508.        will use the installed FOSSIL driver for your system instead of
  509.        driving the comm. port directly.
  510.  
  511.  
  512.        -FSL       -FSL
  513.        ──────────────────────────────────────────────────────────────────────
  514.        This option is only useful to BBS sysops that use a FOSSIL driver for
  515.        their system.  If you use a FOSSIL driver, you will need to include
  516.        this option.  It changes the meaning of the -Com: parameter.  Instead
  517.        of a physical comm. port number, it specifies the FOSSIL port number
  518.        to use.  Be sure you have specified things correctly when using either
  519.  
  520.  
  521.                                           7
  522.  
  523.  
  524.  
  525.  
  526.        of these two options.  Kill QWK Dupes does no error checking to see if
  527.        the either the physical comm. port exists, or if the FOSSIL driver is
  528.        loaded.
  529.  
  530.  
  531.        -NoFSL       -NoFSL
  532.        ──────────────────────────────────────────────────────────────────────
  533.        This option will override the -FSL option.  Useful if you have
  534.        included -FSL in your KILLQDUP environment variable and don't want to
  535.        use the FOSSIL driver on a particular scan.
  536.  
  537.  
  538.        -NDX       -NDX
  539.        ──────────────────────────────────────────────────────────────────────
  540.        This option is will be used mostly by users wishing to scan QWK
  541.        packets before reading them with your favorite QWK compatible offline
  542.        reader.  It can also be used to generate *.NDX files for a QWK packet
  543.        that does not contain them, such as a netmail packet a node receives
  544.        from its mail HUB.
  545.  
  546.        Prior to using this option, you must have extracted your CONTROL.DAT
  547.        file along with the MESSAGES.DAT file from the QWK packet and placed
  548.        both files in the same sub-directory.  Kill QWK Dupes will put the
  549.        *.NDX files in this sub-directory also.  After running Kill QWK Dupes,
  550.        you must re-pack the QWK packet with the new MESSAGES.DAT file, and
  551.        the new *.NDX file.  The CONTROL.DAT file is only used by Kill QWK
  552.        Dupes for information necessary to correctly rebuild the *.NDX files,
  553.        and therefore remains unchanged.
  554.  
  555.  
  556.        -NoNDX       -NoNDX
  557.        ──────────────────────────────────────────────────────────────────────
  558.        This option will override the -NDX option.  Useful if you have
  559.        included -NDX in your KILLQDUP environment variable and don't want the
  560.        *.NDX files built on a particular scan.
  561.  
  562.  
  563.        -NoKill       -NoKill
  564.        ──────────────────────────────────────────────────────────────────────
  565.        This option is useful if you want to just scan the packet without
  566.        actually removing any duplicate messages found in the input file.
  567.        This option runs a lot faster because Kill QWK Dupes is not actually
  568.        rebuilding the QWK file.  All it does is scan the input file.
  569.  
  570.        NOTE: The CRC file is not updated when this option is used.  Thus
  571.        allowing you to do a quick scan check without effecting any of the
  572.        data files.
  573.  
  574.  
  575.        -Kill       -Kill
  576.        ──────────────────────────────────────────────────────────────────────
  577.        This option will override the -NoKill option.  Useful if you have
  578.        included -NoKill in your KILLQDUP environment variable and do want
  579.        duplicate messages removed on a particular scan.
  580.  
  581.  
  582.                                           8
  583.  
  584.  
  585.  
  586.  
  587.        Use of the KILLQDUP environment variable       Use of the KILLQDUP environment variable
  588.        ──────────────────────────────────────────────────────────────────────
  589.        Any of the 12 command line options may also be specified as the
  590.        default operating mode by setting the environment variable "KILLQDUP".
  591.        If Kill QWK Dupes finds this environment variable set, it will parse
  592.        it's setting just like it does the command line.  For example:
  593.  
  594.        SET KILLQDUP=-Log:D:\ALLOGS\DUPES.LOG -CF:NODE.CRC
  595.  
  596.        will cause Kill QWK Dupes to always write its status output to the
  597.        file "D:\ALLOGS\DUPES.LOG" and use the file "NODE.CRC" as the CRC
  598.        table in the default mode.
  599.  
  600.        In the event there are conflicting options specified, those entered on
  601.        the command line will override those set via the environment variable.
  602.  
  603.  
  604.  
  605.  
  606.  
  607.  
  608.  
  609.  
  610.  
  611.  
  612.  
  613.  
  614.  
  615.  
  616.  
  617.  
  618.  
  619.  
  620.  
  621.  
  622.  
  623.  
  624.  
  625.  
  626.  
  627.  
  628.  
  629.  
  630.  
  631.  
  632.  
  633.  
  634.  
  635.  
  636.  
  637.  
  638.  
  639.  
  640.  
  641.  
  642.  
  643.                                           9
  644.  
  645.  
  646.  
  647.  
  648.        Appendix A: How Kill QWK Dupes operates (aka what is a duplicate       Appendix A: How Kill QWK Dupes operates (aka what is a duplicate
  649.        message?)       message?)
  650.        ──────────────────────────────────────────────────────────────────────
  651.        Kill QWK Dupes works by maintaining its own table of message CRC's.
  652.        For every message scanned, the CRC16 of the message body up to but not
  653.        including taglines (if present) is calculated.  Next the CRC16 of the
  654.        message headers TO field is calculated.  All other portions of the
  655.        message header are ignored as unimportant information for the purpose
  656.        of duplicate message detection.
  657.  
  658.        The CRC table is then scanned for a matching pair of CRC values that
  659.        also matches the conference number the message is stored in.  If no
  660.        match is found in that conference, the new pair is added to the table
  661.        for that conference number.  If the addition of the CRC pair causes
  662.        the CRC table to be filled, the 32 oldest CRC pairs are thrown away,
  663.        making room for 32 more CRC pairs.  If on the other hand a CRC pair
  664.        match is found in 4 or more different conferences, the excess messages
  665.        will also be removed as duplicate messages.  This prevents the "letter
  666.        bomb", a case where one user posts the same message to all conferences
  667.        he has access to.
  668.  
  669.        If however a 3 way match (CRC16 of the message body, and CRC16 of the
  670.        TO field, and the conference number) is found, the message is removed
  671.        from the input file and the number of duplicates found counter is
  672.        incremented by one.
  673.  
  674.        Kill QWK Dupes also maintains a table of date & time stamp table
  675.        pointers so that it knows the exact age of each CRC pair contained in
  676.        the table.  When it finishes scanning, Kill QWK Dupes will trim the
  677.        CRC table size to the maximum number of CRC entries you have
  678.        specified, and also remove CRC pairs that are older then the date you
  679.        have specified.
  680.  
  681.        Unless the -NoKill option is specified, Kill QWK Dupes will also
  682.        modify the first 128 bytes of the output file (a header block) with a
  683.        signature and ending pointer such that if the file is added onto (a
  684.        node does an additional export appending to an existing .REP packet
  685.        for example) Kill QWK Dupes will not re-scan the entire packet, but
  686.        resume its scan at the point where the new messages were added.  This
  687.        prevents running Kill QWK Dupes on the same packet more then once and
  688.        accidentally removing the already scanned messages believing they are
  689.        duplicates.
  690.  
  691.        Each CRC pair entry in the table uses 6 bytes.  Each date & time stamp
  692.        table pointer uses 6 bytes.  There's also 6 bytes of overhead in the
  693.        CRC file when stored on disk.
  694.  
  695.  
  696.  
  697.  
  698.  
  699.  
  700.  
  701.  
  702.  
  703.  
  704.                                          10
  705.  
  706.  
  707.  
  708.  
  709.        Appendix B: How to install Kill QWK Dupes into the MarkMail door       Appendix B: How to install Kill QWK Dupes into the MarkMail door
  710.        ──────────────────────────────────────────────────────────────────────
  711.        This appendix is added with kudos to Mike King of IDC BBS for figuring
  712.        out how to install Kill QWK Dupes in the MarkMail door.
  713.  
  714.        In order to make Kill QWK Dupes work with the MarkMail door, it must
  715.        intercept MarkMail at a point where it's about to process the .REP
  716.        packet.  You do NOT want to intercept and scan the .QWK packets
  717.        MarkMail sends because Kill QWK Dupes would see all messages sent to
  718.        the various users as duplicates and remove them accordingly.  The best
  719.        place to intercept the .REP packet processing is where MarkMail is
  720.        shelling out to a decompression program in order to decompress the
  721.        .REP packet.  What you do is to insert a batch file of your own that
  722.        will decompress the .REP packet, scan for duplicates and leave the
  723.        files just where MarkMail expects to find them.
  724.  
  725.        The following 5 steps (which assume you already have MarkMail working)
  726.        outline the procedure on how to accomplish this:
  727.  
  728.             1) Start by running the MarkMail System Manager program "MMSM":
  729.  
  730.      ┌────────────────────────────────────────────────────────────────────────┐
  731.      │                         MarkMail System Manager                        │
  732.      │                Copyright 1989, 1990, 1991 By Mark Turner               │
  733.      │                                                                        │
  734.      │ ╓────────────────────────────────────────────────────────────────────╖ │
  735.      │ ║                         Configuration Menu                         ║ │
  736.      │ ╟────────────────────────────────────────────────────────────────────╢ │
  737.      │ ║                                                                    ║ │
  738.      │ ║               A  General Configuration                             ║ │
  739.      │ ║               B  Compression Methods                               ║ │
  740.      └────────────────────────────────────────────────────────────────────────┘
  741.  
  742.             2) Select option B to configure Compression methods:
  743.  
  744.      ┌────────────────────────────────────────────────────────────────────────┐
  745.      │ ╔═════════════════════════════════════════════════════════════════════ │
  746.      │ ║                              Compression Methods                     │
  747.      │ ║                                                                      │
  748.      │ ║                                                                      │
  749.      │ ║                                                                      │
  750.      │ ║                                                                      │
  751.      │ ║                                                                      │
  752.      │ ║    Method #1       Name : Default                         (Default)  │
  753.      │ ║    Compress Cmd Line    : Pkzip                                      │
  754.      │ ║    Un-Compress Cmd Line : Pkunzip                                    │
  755.      └────────────────────────────────────────────────────────────────────────┘
  756.  
  757.             3) On the third line substitute "MMKILLQ" in place of "Pkunzip".
  758.             This is the name of the batch file that will do the decompressing
  759.             and scanning of the .REP packets.  You can use a different name
  760.             if you wish.  Leave all other items alone.
  761.  
  762.  
  763.  
  764.  
  765.                                          11
  766.  
  767.  
  768.  
  769.  
  770.  
  771.      ┌────────────────────────────────────────────────────────────────────────┐
  772.      │ ╔═════════════════════════════════════════════════════════════════════ │
  773.      │ ║                              Compression Methods                     │
  774.      │ ║                                                                      │
  775.      │ ║                                                                      │
  776.      │ ║                                                                      │
  777.      │ ║                                                                      │
  778.      │ ║                                                                      │
  779.      │ ║    Method #1       Name : Default                         (Default)  │
  780.      │ ║    Compress Cmd Line    : Pkzip                                      │
  781.      │ ║    Un-Compress Cmd Line : MmKillq                                    │
  782.      └────────────────────────────────────────────────────────────────────────┘
  783.  
  784.             4) After entering the change, press the Esc key twice to exit
  785.             MMSM and save the change.
  786.  
  787.             5) Next the batch file "MMKILLQ.BAT" must be created.  Its
  788.             contents should resemble the following (a sample MMKILLQ.BAT file
  789.             has been included in the package for you to follow and modify as
  790.             required):
  791.  
  792.             SET KILLQDUP = -MC:8000 -MD:14 -Com:1
  793.             PKUNZIP %1
  794.             KILLQ IDCBBS.MSG -CF:C:\QM4\IDCBBS.CRC -Log:C:\QM4\KILLQDUP.LOG
  795.             DEL IDCBBS.BAK
  796.             SET KILLQDUP =
  797.  
  798.             The first line sets the KILLQDUP environment variable such that
  799.             the following KILLQ line doesn't become excessively long.  In
  800.             this case the environment variable is telling Kill QWK Dupes to
  801.             maintain a maximum of 8000 entries in the CRC table, to only
  802.             track the last 14 days worth of CRC's and to talk to the user via
  803.             Comm. Port 1.  The next line does the actual decompression of the
  804.             .REP packet.  Next is the KILLQ line which does the actual
  805.             scanning of file containing the messages from the user.  This
  806.             line is also telling Kill QWK Dupes to use the filename
  807.             "IDCBBS.CRC" as the CRC file and to use the file "KILLQDUP.LOG"
  808.             to write/append its processing results to.  Be sure to replace
  809.             "IDCBBS" with the actual BBS_ID that you go by.  The next line
  810.             simply erases the IDCBBS.BAK file that Kill QWK Dupes creates
  811.             during its processing.  Again, be sure to replace "IDCBBS" with
  812.             the actual BBS_ID that you go by.  The last line clears out the
  813.             KILLQDUP environment variable.
  814.  
  815.        It is likely that you will have to modify the MMKILLQ.BAT file to fit
  816.        your setup.  At a minimum, the path to be used for the log file will
  817.        have to be changed.  The Comm. Port assignment may or may not need to
  818.        be changed (or may be removed altogether if you wish).  All the other
  819.        parameters may be changed as well to best fit your personal
  820.        preferences.
  821.  
  822.  
  823.  
  824.  
  825.  
  826.                                          12
  827.  
  828.  
  829.  
  830.  
  831.        Appendix C: How to install Kill QWK Dupes into the Qmail door       Appendix C: How to install Kill QWK Dupes into the Qmail door
  832.        ──────────────────────────────────────────────────────────────────────
  833.        This appendix is added with kudos to Mike King of IDC BBS for figuring
  834.        out how to install Kill QWK Dupes in the MarkMail door.
  835.  
  836.        In order to make Kill QWK Dupes work with the Qmail door, it must
  837.        intercept Qmail at a point where it's about to process the .REP
  838.        packet.  You do NOT want to intercept and scan the .QWK packets Qmail
  839.        sends because Kill QWK Dupes would see all messages sent to the
  840.        various users as duplicates and remove them accordingly.  The best
  841.        place to intercept the .REP packet processing is where Qmail is
  842.        shelling out to a decompression program in order to decompress the
  843.        .REP packet.  What you do is to insert a batch file of your own that
  844.        will decompress the .REP packet, scan for duplicates and leave the
  845.        files just where Qmail expects to find them.
  846.  
  847.        The following 5 steps (which assume you already have Qmail working)
  848.        outline the procedure on how to accomplish this:
  849.  
  850.             1) Start by running the Qmail Setup Utility program "QMSETUP":
  851.  
  852.        ┌────────────────────────────────────────────────────────────────────┐
  853.        │ ╔═════════════════════════════════════════════════════════════════ │
  854.        │ ║                        Qmail Door 4.00 Setup Utility             │
  855.        │ ║                         Copyright 1990 by Sparkware              │
  856.        │ ║                                                                  │
  857.        │ ║    ╓──────────────────────────────────────────────────────────── │
  858.        │ ║    ║                             Main Menu                       │
  859.        │ ║    ║──────────────────────────────────────────────────────────── │
  860.        │ ║    ║                                                             │
  861.        │ ║    ║               A  Paths & Filenames                          │
  862.        │ ║    ║               B  Transfer Protocols                         │
  863.        │ ║    ║               C  Archiver Definitions                       │
  864.        └────────────────────────────────────────────────────────────────────┘
  865.  
  866.             2) Select option C for Archiver Definitions:
  867.  
  868.          ┌────────────────────────────────────────────────────────────────┐
  869.          │ ╔═════════════════════════════════════════════════════════════ │
  870.          │ ║                             Archiver Definitions             │
  871.          │ ║                                                              │
  872.          │ ║                                                              │
  873.          │ ║ Archiver #1    : PkZip                                       │
  874.          │ ║ Pack command   : PKZIP -A                                    │
  875.          │ ║ Unpack command : PKUNZIP -O                                  │
  876.          └────────────────────────────────────────────────────────────────┘
  877.  
  878.             3) On the third line substitute "QMKILLQ" in place of "PKUNZIP -
  879.             O".  This is the name of the batch file that will do the
  880.             decompressing and scanning of the .REP packets.  You can use a
  881.             different name if you wish.  Leave all other items alone.
  882.  
  883.  
  884.  
  885.  
  886.  
  887.                                          13
  888.  
  889.  
  890.  
  891.  
  892.  
  893.          ┌────────────────────────────────────────────────────────────────┐
  894.          │ ╔═════════════════════════════════════════════════════════════ │
  895.          │ ║                             Archiver Definitions             │
  896.          │ ║                                                              │
  897.          │ ║                                                              │
  898.          │ ║ Archiver #1    : PkZip                                       │
  899.          │ ║ Pack command   : PKZIP -A                                    │
  900.          │ ║ Unpack command : QMKILLQ                                     │
  901.          └────────────────────────────────────────────────────────────────┘
  902.  
  903.             4) After entering the change, press the Esc key twice to exit
  904.             QMSETUP and save the change.
  905.  
  906.             5) Next the batch file "QMKILLQ.BAT" must be created.  Its
  907.             contents should resemble the following (a sample QMKILLQ.BAT file
  908.             has been included in the package for you to follow and modify as
  909.             required):
  910.  
  911.             SET KILLQDUP = -MC:8000 -MD:14 -Com:1
  912.             PKUNZIP %1 %2 %3
  913.             KILLQ %2IDCBBS.MSG -CF:C:\QM4\IDCBBS.CRC -Log:C:\QM4\KILLQDUP.LOG
  914.             DEL %2IDCBBS.BAK
  915.             SET KILLQDUP =
  916.  
  917.             The first line sets the KILLQDUP environment variable such that
  918.             the following KILLQ line doesn't become excessively long.  In
  919.             this case the environment variable is telling Kill QWK Dupes to
  920.             maintain a maximum of 8000 entries in the CRC table, to only
  921.             track the last 14 days worth of CRC's and to talk to the user via
  922.             Comm. Port 1.  The next line does the actual decompression of the
  923.             .REP packet.  Next is the KILLQ line which does the actual
  924.             scanning of file containing the messages from the user.  This
  925.             line is also telling Kill QWK Dupes to use the filename
  926.             "IDCBBS.CRC" as the CRC file and to use the file "KILLQDUP.LOG"
  927.             to write/append its processing results to.  Be sure to replace
  928.             "IDCBBS" with the actual BBS_ID that you go by.  The next line
  929.             simply erases the IDCBBS.BAK file that Kill QWK Dupes creates
  930.             during its processing. Again, be sure to replace "IDCBBS" with
  931.             the actual BBS_ID that you go by.  The last line clears out the
  932.             KILLQDUP environment variable.
  933.  
  934.        It is likely that you will have to modify the QMKILLQ.BAT file to fit
  935.        your setup.  At a minimum, the path to be used for the log file will
  936.        have to be changed.  The Comm. Port assignment may or may not need to
  937.        be changed (or may be removed altogether if you wish).  All the other
  938.        parameters may be changed as well to best fit your personal
  939.        preferences.
  940.  
  941.  
  942.  
  943.  
  944.  
  945.  
  946.  
  947.  
  948.                                          14
  949.  
  950.  
  951.  
  952.  
  953.        Appendix D: Multi-node considerations       Appendix D: Multi-node considerations
  954.        ──────────────────────────────────────────────────────────────────────
  955.        Kill QWK Dupes is fully network/DESQView and multi-node compatible.
  956.        However there are some considerations that should be discussed as they
  957.        may affect your setup.
  958.  
  959.        First, under multi-node operation, which Comm. Port to use is
  960.        generally passed to the door program (such as Qmail and MarkMail) via
  961.        some sort of PCBOARD.SYS/DOOR.SYS info. file.  Since Kill QWK Dupes is
  962.        unable to extract the Comm. Port information from your info. file,
  963.        this information must be conveyed via some other means (or not
  964.        specified at all such that Kill QWK Dupes doesn't attempt to talk to
  965.        any Comm. Port).  The best and easiest way to specify it is to have
  966.        the KILLQDUP environment variable set permanently as part of the batch
  967.        file that brings up the individual node.  The Comm. Port to use would
  968.        be specified in the environment variable, and the two "SET KILLQDUP"
  969.        lines in the QMKILLQ.BAT and MMKILLQ.BAT files would have to be
  970.        eliminated.  This method allows a common batch file be run by the mail
  971.        door to do the scanning, and still have the correct Comm. Port used by
  972.        Kill QWK Dupes.  Another method would be to setup each node such that
  973.        a different batch file is run by each node when the mail door shells
  974.        out to decompress the mail packet.  Each batch file would have to
  975.        correctly specify the Comm. Port for Kill QWK Dupes to use.
  976.  
  977.        Secondly file sharing/locking must be discussed.  In order for a
  978.        multi-node system to use and share the same CRC file among all the
  979.        nodes, Kill QWK Dupes uses file sharing and locking.  But in order for
  980.        this feature to be active, you must be running DOS 3.0 or above, and
  981.        have SHARE loaded.  If you are not running multi-node, then DOS 2.x is
  982.        all that's required to run Kill QWK Dupes since file sharing/locking
  983.        is not required.
  984.  
  985.  
  986.        Errorlevels returned by Kill QWK Dupes       Errorlevels returned by Kill QWK Dupes
  987.        ──────────────────────────────────────────────────────────────────────
  988.        Kill QWK Dupes returns errorlevels to help make its use in a batch
  989.        file easier.  The following is a list of the errorlevels and their
  990.        meanings:
  991.  
  992.             0 - Normal completion. At least one duplicate message was found
  993.             and removed (unless -NoKill was specified).
  994.  
  995.             1 - Normal completion. No duplicates were found.
  996.  
  997.             2 - Command line parameter error or no file specified to scan.
  998.  
  999.             3 - Insufficient memory to allocate required data arrays.
  1000.  
  1001.             4 - Unexpected system error occurred.
  1002.  
  1003.             5 - Disk full error while writing to file.
  1004.  
  1005.  
  1006.  
  1007.  
  1008.  
  1009.                                          15
  1010.  
  1011.  
  1012.  
  1013.  
  1014.        History       History
  1015.        ──────────────────────────────────────────────────────────────────────
  1016.        10/30/91 v1.00 - Initial public release.
  1017.        11/05/91 v1.01 - Return errorlevels for better batch file use.
  1018.  
  1019.  
  1020.  
  1021.  
  1022.  
  1023.  
  1024.  
  1025.  
  1026.  
  1027.  
  1028.  
  1029.  
  1030.  
  1031.  
  1032.  
  1033.  
  1034.  
  1035.  
  1036.  
  1037.  
  1038.  
  1039.  
  1040.  
  1041.  
  1042.  
  1043.  
  1044.  
  1045.  
  1046.  
  1047.  
  1048.  
  1049.  
  1050.  
  1051.  
  1052.  
  1053.  
  1054.  
  1055.  
  1056.  
  1057.  
  1058.  
  1059.  
  1060.  
  1061.  
  1062.  
  1063.  
  1064.  
  1065.  
  1066.  
  1067.  
  1068.  
  1069.  
  1070.                                          16